今天的學習重點是深入探討 Python 函式的進階概念。在前幾天的學習中,學習了如何定義和調用簡單的函式,但函式的功能遠不止這些。在進階函式中,能利用參數默認值、* args、* *kwargs 等特性,讓函式更具靈活性和強大性。
當定義函式時,可以給參數設置默認值。如果在調用函式時未傳入該參數,則會自動使用默認值。
範例:
當調用 greet() 時,它會輸出 "你好,Hank!"。這讓函式更加靈活,因為即使用戶未提供所有參數,函式依然可以正常執行。
有時我們不知道一個函式會接受多少個參數,這時候可以使用 * args 來傳遞任意數量的參數。* args 會將所有傳入的參數打包成一個元組。
例如:
調用 add_numbers(1, 2, 3) 會返回 6。這讓我們可以處理任意數量的參數,提供了很大的彈性。
類似於 * args,* *kwargs 允許我們傳遞任意數量的關鍵字參數(以字典的形式)。這樣可以使函式更加靈活。
範例:
調用 print_info(name="George", age=65) 會輸出:
name: George
age: 65
Lambda 函式是一種小型的匿名函式,通常用於簡單的運算。它沒有函式名,並且只能有一個表達式。
語法為:
範例:
Lambda 常用於需要簡單函式的場景,如 map()、filter() 等高階函式。
Python 支援函式嵌套,這表示可以在一個函式內定義另一個函式。內部函式可以訪問外部函式的變量,這就產生了閉包(closure)。閉包允許內部函式「記住」外部函式的狀態,即使外部函式已經結束。
範例:
今天學習了 Python 中函式的進階特性,使我對函式有了更深入的理解。透過設定參數默認值、使用不定長度參數 * args 和 * *kwargs、以及匿名函式 ( Lambda ) 等技術,可以讓函式更加靈活且強大。此外,嵌套函式與閉包的概念能創建具有記憶外部狀態的函式,這是進階 Python 開發中很有用的技巧。